/********************************************************
 *
 * FILE NAME:   notchfilter.h
 *
 * DESCRIPTION:
 *  Module with notch filter
 *
 ********************************************************/

#ifndef NOTCHFILTER_H
#define NOTCHFILTER_H

/********************************************************/
/*              Includes                                */
/********************************************************/
#include "filter.h"

#include <QApplication>

/********************************************************/
/*              Defines                                 */
/********************************************************/

/********************************************************/
/*              Macros                                  */
/********************************************************/

/********************************************************/
/*              Typedefs                                */
/********************************************************/
class NotchFilter;

class NotchFilter: public Filter
{
    Q_OBJECT
    public:
        /********************************************************
         * Function Name    :   NotchFilter
         *
         * Description      :   Constructor, calculates coefficients of notch filter
         *
         * Side effects     :
         *
         * Comment          :
         *
         * Parameters       :   sample_t Wo = notch frequencty (normalized, in range [0, 0.5])
         *                      sample_t BW = bandwidth of the filter (normalized, in range [0, 0.5])
         *                      size_t burstLength = number of samples that can be processed in burst
         *
         * Returns          :
         *
         * Reviewed by      :   draganmarjanovic10@gmail.com
         *
         ********************************************************/
        NotchFilter(Filter *parent = 0);

        Q_INVOKABLE void init(int burstLength);

        Q_INVOKABLE void setCoefficients(double Wo, double BW);

        /********************************************************
         * Function Name    :   ~NotchFilter
         *
         * Description      :   Destructor
         *
         * Side effects     :
         *
         * Comment          :
         *
         * Parameters       :
         *
         * Returns          :
         *
         * Reviewed by      :   draganmarjanovic10@gmail.com
         *
         ********************************************************/
        ~NotchFilter();
};

/********************************************************/
/*              Functions Declarations                  */
/********************************************************/

/********************************************************/
/*              Variables Declarations (IMPORT)         */
/********************************************************/

#endif /* NOTCHFILTER_H */
